<?php
// +----------------------------------------------------------------------
// | QSCMS
// +----------------------------------------------------------------------
// | Copyright (c)  2025 https://www.qqss.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed QSCMS is not free software, commercial use must purchase official license from official website to avoid unnecessary legal disputes.
// +----------------------------------------------------------------------
// | Author: Contract 990504246@qq.com
// +----------------------------------------------------------------------

namespace app\web\controller;

use support\Request;

/**
 * 协议控制器
 */
class Agreement extends Base
{
    /**
     * 获取协议内容
     */
    public function index(Request $request)
    {
        $type = $request->get('type', '');

        if (empty($type)) {
            return $this->error('协议类型不能为空');
        }

        // 支持的协议类型
        $allowedTypes = ['user_protocol', 'privacy_protocol', 'payment_protocol'];

        if (!in_array($type, $allowedTypes)) {
            return $this->error('不支持的协议类型');
        }

        try {
            // 从配置中获取协议内容
            $content = conf($type);
            $title   = $this->getProtocolTitle($type);

            if (empty($content)) {
                $content = $this->getDefaultProtocol($type);
            }

            return $this->success('获取成功', [
                'type'    => $type,
                'title'   => $title,
                'content' => $content
            ]);

        } catch (\Exception $e) {
            return $this->error('获取协议失败: ' . $e->getMessage());
        }
    }

    /**
     * 协议页面
     */
    public function page(Request $request)
    {
        $type = $request->get('type', 'user_protocol');

        // 支持的协议类型
        $allowedTypes = ['user_protocol', 'privacy_protocol', 'payment_protocol'];

        if (!in_array($type, $allowedTypes)) {
            return $this->error('不支持的协议类型');
        }

        try {
            // 从配置中获取协议内容
            $content = conf($type);
            $title   = $this->getProtocolTitle($type);

            if (empty($content)) {
                $content = $this->getDefaultProtocol($type);
            }

            return $this->render('agreement/index', [
                'type'    => $type,
                'title'   => $title,
                'content' => $content
            ]);

        } catch (\Exception $e) {
            return $this->error('获取协议失败: ' . $e->getMessage());
        }
    }

    /**
     * 获取协议标题
     */
    private function getProtocolTitle($type)
    {
        $titles = [
            'user_protocol'    => '用户协议',
            'privacy_protocol' => '隐私协议',
            'payment_protocol' => '付款协议'
        ];

        return $titles[$type] ?? '协议';
    }

    /**
     * 获取默认协议内容
     */
    private function getDefaultProtocol($type)
    {
        $defaults = [
            'user_protocol'    => $this->getDefaultUserProtocol(),
            'privacy_protocol' => $this->getDefaultPrivacyProtocol(),
            'payment_protocol' => $this->getDefaultPaymentProtocol()
        ];

        return $defaults[$type] ?? '';
    }

    /**
     * 默认用户协议
     */
    private function getDefaultUserProtocol()
    {
        return '<h2>用户协议</h2>
<p>欢迎使用我们的服务！在使用我们的服务之前，请仔细阅读并理解本用户协议。</p>

<h3>1. 服务条款</h3>
<p>通过访问和使用本网站，您同意遵守本协议的所有条款和条件。</p>

<h3>2. 用户责任</h3>
<p>用户在使用本服务时，应当遵守相关法律法规，不得从事违法违规活动。</p>

<h3>3. 知识产权</h3>
<p>本网站的所有内容，包括但不限于文字、图片、音频、视频等，均受知识产权法保护。</p>

<h3>4. 免责声明</h3>
<p>在法律允许的最大范围内，我们不对因使用本服务而产生的任何损失承担责任。</p>

<h3>5. 协议修改</h3>
<p>我们保留随时修改本协议的权利，修改后的协议将在网站上公布。</p>

<p>如有疑问，请联系我们的客服团队。</p>';
    }

    /**
     * 默认隐私协议
     */
    private function getDefaultPrivacyProtocol()
    {
        return '<h2>隐私协议</h2>
<p>我们非常重视您的隐私保护，本隐私协议说明了我们如何收集、使用和保护您的个人信息。</p>

<h3>1. 信息收集</h3>
<p>我们可能收集您提供的个人信息，包括但不限于姓名、邮箱、电话号码等。</p>

<h3>2. 信息使用</h3>
<p>我们使用收集的信息来提供和改善我们的服务，与您沟通，以及遵守法律要求。</p>

<h3>3. 信息共享</h3>
<p>除非获得您的同意或法律要求，我们不会与第三方共享您的个人信息。</p>

<h3>4. 信息安全</h3>
<p>我们采取适当的技术和管理措施来保护您的个人信息安全。</p>

<h3>5. Cookie使用</h3>
<p>我们使用Cookie来改善用户体验，您可以通过浏览器设置管理Cookie。</p>

<h3>6. 联系我们</h3>
<p>如果您对本隐私协议有任何疑问，请联系我们。</p>';
    }

    /**
     * 默认付款协议
     */
    private function getDefaultPaymentProtocol()
    {
        return '<h2>付款协议</h2>
<p>本付款协议规定了您在使用我们的付费服务时的权利和义务。</p>

<h3>1. 付款方式</h3>
<p>我们支持多种付款方式，包括在线支付、银行转账等。</p>

<h3>2. 价格政策</h3>
<p>所有价格均以人民币计价，我们保留调整价格的权利。</p>

<h3>3. 退款政策</h3>
<p>在特定条件下，您可以申请退款。具体退款政策请参考相关条款。</p>

<h3>4. 发票服务</h3>
<p>我们可以根据您的需要提供发票服务。</p>

<h3>5. 争议解决</h3>
<p>如有付款争议，我们将通过友好协商解决。</p>

<p>感谢您选择我们的服务！</p>';
    }
}
